package com.team9.fitness.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 社区帖子实体
 * 
 * 存储社区帖子的完整信息：
 * - 基本信息：标题、内容、创建时间
 * - 统计信息：点赞数量、喜欢数量、评论数量
 * - 状态信息：当前用户是否点赞、是否喜欢
 * - 关联信息：用户ID、更新时间
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class CommunityPost {

    private Long id;

    private Long userId;

    /**
     * 作者用户名
     */
    private String author;

    /**
     * 帖子标题
     */
    private String title;

    /**
     * 帖子内容
     */
    private String content;

    /**
     * 点赞数量
     */
    private Integer likeCount;

    /**
     * 喜欢数量
     */
    private Integer favoriteCount;

    /**
     * 评论数量
     */
    private Integer commentCount;

    /**
     * 当前用户是否点赞
     */
    private Boolean isLiked;

    /**
     * 当前用户是否喜欢
     */
    private Boolean isFavorited;

    private LocalDateTime createdAt;

    private LocalDateTime updatedAt;

    public void setCreatedAtIfNull() {
        if (createdAt == null) {
            createdAt = LocalDateTime.now();
        }
    }

    public void setUpdatedAtIfNull() {
        updatedAt = LocalDateTime.now();
    }

    /**
     * 初始化统计字段
     */
    public void initializeCounts() {
        if (this.likeCount == null) {
            this.likeCount = 0;
        }
        if (this.favoriteCount == null) {
            this.favoriteCount = 0;
        }
        if (this.commentCount == null) {
            this.commentCount = 0;
        }
        if (this.isLiked == null) {
            this.isLiked = false;
        }
        if (this.isFavorited == null) {
            this.isFavorited = false;
        }
    }
}
